export class MathUtils {
    /**
     * Get a random integer between min and max (inclusive)
     * 获取一个介于min和max之间的随机整数（包括min和max）
     * @param min The minimum value
     *
     */
    public static randomInt(min: number, max: number): number {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }

    /**
     * Get a random float between min and max (inclusive)
     * 获取一个介于min和max之间的随机浮点数（包括min和max）
     * @param min The minimum value
     *
     */
    public static randomFloat(min: number, max: number): number {
        return Math.random() * (max - min) + min;
    }

    /**
     * 线性插值
     * @param start 起始值
     * @param end 结束值
     * @param t 插值
     * @returns 插值结果
     */
    public static lerp(start: number, end: number, t: number): number {
        return start + (end - start) * t;
    }

    /**
     * 线性插值
     * @param start 起始值
     * @param end 结束值
     * @param t 插值
     * @returns 插值结果
     */
    public static lerpVector3(
        start: GameVector3,
        end: GameVector3,
        t: number
    ): GameVector3 {
        return new GameVector3(
            this.lerp(start.x, end.x, t),
            this.lerp(start.y, end.y, t),
            this.lerp(start.z, end.z, t)
        );
    }
}
